CROSS_COMPILE := arm-openwrt-linux-
# 定义延时变量
AS                = $(CROSS_COMPILE)as
LD                = $(CROSS_COMPILE)ld
CC                = $(CROSS_COMPILE)gcc
CPP               = $(CROSS_COMPILE)g++
AR                = $(CROSS_COMPILE)ar
NM                = $(CROSS_COMPILE)nm
STRIP             = $(CROSS_COMPILE)strip
OBJCOPY           = $(CROSS_COMPILE)objcopy
OBJDUMP           = $(CROSS_COMPILE)objdump
# export全局变量, 可供其他Makefile使用
export AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP
#############################################################################
# 本Makefile在其他项目中使用需要变动的地方
#############################################################################
CFLAGS := -Wall -O2 -g
LDFLAGS := 
TARGET := device_discovery
INCLUDES:=
CFLAGS+=$(INCLUDES)
#############################################################################
# 自动添加项目自带头文件
#############################################################################
TOPDIR := $(shell pwd)
INC_DIRS:=$(shell dirname `find $(TOPDIR) -name "*.h"` | uniq)                                  
INNER_INCLUDES:=$(patsubst %,-I%,$(INC_DIRS))             
CFLAGS+=$(INNER_INCLUDES) 
#############################################################################
# 自动添加本项目所有的库文件
#############################################################################
LIB_FILES:=$(shell find $(TOPDIR) -name "*.so")
#LIB_FILES :=$(shell find $(TOPDIR) -name "*.a")
LIB_DIRS:=$(shell dirname $(LIB_FILES) | uniq)                         
LIB_NAMES:=$(basename $(notdir $(LIB_FILES)))                
LIB_DIRS:=$(patsubst %,-L%,$(LIB_DIRS))                   
LIB_NAMES:=$(patsubst lib%,-l%,$(LIB_NAMES))                
LDFLAGS+=$(LIB_DIRS) $(LIB_NAMES)
#############################################################################
# 编译规则
#############################################################################
#罗列出项目顶层目录文件和目录
src_all := $(shell ls)
#将临时目录build排除开来
src_all := $(filter-out build,$(src_all))
export CFLAGS LDFLAGS TOPDIR

#如果build不存在则新建,将项目顶层目录的内容拷贝到build目录内
all :
	$(shell if [ ! -d build ]; then mkdir build; fi;)
	@cp -rfp $(src_all) build && cd build && make compile

compile :  start_recursive_build $(TARGET)
	@echo finish compile $(TARGET)!



#各层Makefile都有 ：进入子目录进行编译
start_recursive_build:
	@echo start to compile $(TARGET)!
	make -C ./ -f $(TOPDIR)/Makefile.build

#顶层Makefile特有：开始链接应用程序
$(TARGET) : built-in.o
	$(CC) -o $(TARGET) built-in.o $(LDFLAGS)

clean:
	rm -f $(shell find -name "*.o")
	rm -f $(TARGET)
distclean:
	rm -f $(shell find -name "*.o")
	rm -f $(shell find -name "*.d")
	rm -f $(TARGET)
	rm -rf build/

.PHONY : precompile compile all start_recursive_build
